package org.example.coursemangementserver.server.service.interfac.teacher;

import org.example.coursemangementserver.pojo.dto.IDListDTO;
import org.example.coursemangementserver.pojo.dto.UserLoginDTO;
import org.example.coursemangementserver.pojo.dto.UserRegisterDTO;
import org.example.coursemangementserver.pojo.dto.Pagination;
import org.example.coursemangementserver.pojo.dto.course.*;
import org.example.coursemangementserver.pojo.dto.course.StudentCommentListQuery.GetStudentCommentListDTO;
import org.example.coursemangementserver.pojo.dto.course.TeacherCourseQuery.GetTeacherCourseListDTO;
import org.example.coursemangementserver.pojo.dto.student.TeacherGetStudentOnCourseListDTO;
import org.example.coursemangementserver.pojo.dto.teacher.RemoveStudentFromCourseDTO;
import org.example.coursemangementserver.pojo.dto.teacher.TeacherListQuery.GetTeacherListDTO;
import org.example.coursemangementserver.pojo.dto.teacher.TeacherNewInfoDTO;
import org.example.coursemangementserver.pojo.vo.UserLoginVO;
import org.example.coursemangementserver.pojo.vo.course.StudentCommentList.StudentCommentListVO;
import org.example.coursemangementserver.pojo.vo.course.TeacherCourseList.TeacherCourseListVO;
import org.example.coursemangementserver.pojo.vo.student.TeacherGetStudentListOnCourse.StudentListVO;
import org.example.coursemangementserver.pojo.vo.teacher.TeacherAuditingInfoList.TeacherAuditingListInfoVO;
import org.example.coursemangementserver.pojo.vo.teacher.TeacherInfoList.TeacherListVO;
import org.example.coursemangementserver.pojo.vo.teacher.TeacherInfoVO;

public interface TeacherService {
    /**
     * 教师登录
     * @param userLoginDTO
     * @return
     */
    UserLoginVO login(UserLoginDTO userLoginDTO);

    /**
     * 老师提交注册申请
     * @param userRegisterDTO
     */
    void register(UserRegisterDTO userRegisterDTO);

    /**
     * 获取教师审核信息
     * @return
     */
    TeacherAuditingListInfoVO getTeacherAuditing(Pagination pagination);

    /**
     * 获取所有教师信息
     * @param getTeacherListDTO
     * @return
     */
    TeacherListVO getTeacherList(GetTeacherListDTO getTeacherListDTO);

    /**
     * 处理老师获取自己所授课程信息的请求
     * @param getTeacherCourseListDTO
     * @return
     */
    TeacherCourseListVO getTeacherCourseList(GetTeacherCourseListDTO getTeacherCourseListDTO);

    /**
     * 处理老师获取学生对自己的课程的评价信息
     * @param getStudentCommentListDTO
     * @return
     */
    StudentCommentListVO getStudentCommentList(GetStudentCommentListDTO getStudentCommentListDTO);

    /**
     * 依据课堂id查评价
     */
    StudentCommentListVO getEnrollmentCommentList(GetEnrollmentCommentDTO getEnrollmentCommentDTO);
    TeacherInfoVO getTeacherDetail();

    void updateTeacherInfo(TeacherNewInfoDTO teacherNewInfoDTO);

    void endCourse(EndCourseDTO endCourseDTO);

    StudentListVO getCourseStudentList(TeacherGetStudentOnCourseListDTO teacherGetStudentOnCourseListDTO);

    void removeStudentFromCourse(RemoveStudentFromCourseDTO removeStudentFromCourseDTO);

    void deleteCourseReview(TeacherDeleteCourseReviewDTO teacherDeleteCourseReviewDTO);

    void teacherAddStudentToCourse(TeacherAddStudentToCourse teacherAddStudentToCourse);

    void updateSelectCourse(UpdateEnrollmentDTO updateEnrollmentDTO);
}
